package 开始的剑指offer8月.测试;
/*
求数列的和

（编程题须知）（参考答案）

时间限制： 4000MS
内存限制： 557056KB
题目描述：
数列的定义如下： 数列的第一项为n，以后各项为前一项的平方根，求数列的前m项的和。
输入描述
输入数据有多组，每组占一行，由两个整数n（n<10000）和m(m<1000)组成，n和m的含义如前所述。

输出描述
对于每组输入数据，输出该数列的和，每个测试实例占一行，要求精度保留2位小数。

样例输入
81 4
2 2
样例输出
94.73
3.41
 */
import java.util.ArrayList;
import java.util.Scanner;
public class 求数列的和{
    public static void main(String args[]){
        Scanner scan=new Scanner(System.in);

        while(scan.hasNextInt()){
            int num1=scan.nextInt();
            int num2=scan.nextInt();

            System.out.println(String.format("%.2f",num(num1,num2)));
        }

    }
    public static double num(int num,int nums){
        double sum=0;
        double num0=num;
        while(nums>1){
            sum=sum+Math.sqrt(num0);
            nums--;
            num0=Math.sqrt(num0);
        }

        return sum+num;
    }
}



/*

public  static ArrayList<Double> findPoints (double[] data) {
    // write code here
    ArrayList<Double> list=new ArrayList<>();
    //int i=1;
    double a[];
    int j;

    for(int i=1;i<data.length;i++){
        if(data[i]>data[i-1]&&data[i]<data[i+1]){
            a=new double[data.length-i];
            j=i;
            for (int k = 0; k <data.length-i ;k++) {
                a[k]=data[j];
                j++;
            }
            if(ismin(i,a)){
                list.add(data[i]);
            }

        }

    }

//        while(i<data.length){
//            if(data[i]>data[i-1]&&data[i]<data[i+1]){
//                a=new double[data.length-i];
//
//                for(int k=i;k<a.length;k++){
//                    a[j]=data[k];
//                    j++;
//                }
//                if(ismin(i,a)){
//                    list.add(data[i]);
//                }
//            }
//            i++;
//        }
    return list;
}
    public static boolean ismin(int i,double a[]){
        double min=a[i];
        for(int j=i;j<a.length;j++){
            if(a[j]<min){
                return false;
            }
        }
        return  true;
    }

    public static void main(String[] args) {
        System.out.println(ismin(4,new double[]{-1.1, 3, 7, 79.6, 9.8}));
        System.out.println(findPoints(new double[]{-1.1, 3, 7, 79.6, 9.8}));
        System.out.println(findPoints(new double[]{-5, -2.2, 19, 28, 19, -1.5}));
        System.out.println(findPoints(new double[]{0, -2.2, 11, 22, 15,-18}));
        //System.out.println(ismax(5,new double[]{0, -2.2, 11, 22, 15, -18}));
    }

}
 */